Printers have become an indispensable peripheral component for use with computers. Generally, data that is to be printed by an application is transferred to a “printer driver” via an operating system. The printer driver is a software module that translates the data to be printed into a format that is understandable by the printer. Various additional formatting options may also be provided by the driver, such as adding water marks, re-sizing the data for a page (e.g., expanding or shrinking the data to fit on a particular number of pages), etc.
Printer drivers are typically written by the printer manufacturer and are designed to work with a particular printer as well as a particular operating system. Different drivers generally need to be written for each possible printer/operating system combination that the printer manufacturer wants to support. Maintaining separate printer drivers for each printer/operating system combination is a particularly burdensome task for the printer manufacturer. Furthermore, given that many of the same formatting options are provided by each of the drivers (e.g., adding water marks), maintaining separate printer drivers for each printer/operating system combination causes repetitive efforts as each formatting option is designed into each of the printer/operating system combinations.
Additionally, situations can arise where it is desirable to alter the programming of a printer driver. Examples of such situations include the need to change the code for one of the formatting options in order to fix a bug or other error in the code, to provide increased functionality, etc. However, changing the programming of any one of the formatting options requires recompiling the entire printer driver, including those parts of the driver not affected by the change in formatting option. Additionally, if the formatting option is changed after the printer driver has been distributed to the public, then the entire re-compiled driver must be re-distributed and re-installed by the public.
This invention addresses these disadvantages, providing an improved way to generate printer drivers.